package com.neouton.crm.prm.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.neouton.common.util.PageUtil;
import com.neouton.crm.prm.entity.ProjectReturnedMoneyVO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 项目回款表
 *
 * @author
 * @date 2022-12-02 17:03:47
 * @Version 1.0
 */
public interface ProjectReturnedMoneyService {

    /**
     * 分页查询
     *
     * @param page
     * @param entity
     * @return
     */
    PageUtil<ProjectReturnedMoneyVO> queryReturnedMoneyList(IPage<ProjectReturnedMoneyVO> page, ProjectReturnedMoneyVO entity);

    List<ProjectReturnedMoneyVO> queryReturnedMoneyList(ProjectReturnedMoneyVO entity);

    Map<String, Double> queryAllInfoByDate(ProjectReturnedMoneyVO entity);

    Map<String, Double> queryNowInfo(ProjectReturnedMoneyVO entity);

    Map<String, Double> queryWeekInfo(ProjectReturnedMoneyVO entity);

    Map<String, Double> queryMonthInfo(ProjectReturnedMoneyVO entity);

    Map<String, Double> queryWeekStartInfo(ProjectReturnedMoneyVO entity);

    Map<String, Double> queryWeekEndInfo(ProjectReturnedMoneyVO entity);

    Map<String, Double> queryMonthStartInfo(ProjectReturnedMoneyVO entity);

    Map<String, Double> queryMonthEndInfo(ProjectReturnedMoneyVO entity);

    /**
     * 保存接口[编辑]
     *
     * @param entity
     */
    void saveProjectReturnedMoney(ProjectReturnedMoneyVO entity);

    /**
     * 根据主键id更新
     *
     * @param entity
     */
    void updateProjectReturnedMoneyById(ProjectReturnedMoneyVO entity);

    /**
     * 根据主键id删除
     *
     * @param id 主键
     */
    void deleteprojectReturnedMoneyById(Integer id);

    /**
     * 获取详情
     *
     * @param id
     * @return
     */
    ProjectReturnedMoneyVO getDetailInfo(Integer id);

    List<Integer> queryPeriodState(String contractNumber);

    Boolean verify(ProjectReturnedMoneyVO entity);

    //    List<String> queryContractNumber();
    ProjectReturnedMoneyVO queryInfoByContractNumber(String contractNumber);

    /**
     * 导出
     *
     * @param response
     * @param entity
     * @throws Exception
     */
    void downExcel(HttpServletResponse response, ProjectReturnedMoneyVO entity ,String token) throws Exception;

    /**
     * 定时邮件
     */
    void getScheduleTask();

    void getScheduleMessage();

    Map<Integer, List<Double>> personData(ProjectReturnedMoneyVO entity);
}

